package singleton;

/**
 * @Author 孔德成
 * @Slogan 致敬大师，致敬未来的你
 * @desc 单例模式：保证该类在内存中只有一个实例
 * <p>
 * 懒汉式2
 * 加 synchronized 锁，解决线程不安全问题，但是会降低效率
 */
public class Demo4 {
    private static Demo4 INSTANCE;

    private Demo4() {
    }

    // synchronized 锁的是 Demo4.class 对象
    public static synchronized Demo4 getInstance() {
        if (INSTANCE == null) {
            // 模拟线程不安全场景
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            INSTANCE = new Demo4();
        }
        return INSTANCE;
    }

    public void work() {
        System.out.println("致敬大师，致敬未来的你");
    }
}
